package wator.model;

/**
 * This class is a container for all static and global variables of the
 * program. Consider this as a central configuration class. Legal ranges are
 * given in the descriptions below.
 */
public final class Constants {
	
	/**
	 * This variable defines the maximal dimension of the universe. There must
	 * exist vector implementations up to this dimension. Also, a default
	 * vector for all feasible dimensions have to be defined. 
	 * 
	 * @see IntegerVector#getDefaultVector(int)
	 * @see Integer1DVector
	 * @see Integer2DVector
	 * @see Integer3DVector
	 */
	public static final int MAX_DIM = 3;
	
	/**
	 * This defines the default size of the wator universe. The universe will
	 * span this quantity of cells in each dimension.
	 * 
	 * @see IntegerVector#getDefaultVector(int)
	 */
	public static final int DEFAULT_VECTOR_LENGTH = 20;
	
	/**
	 * This is the default dimension used for size vectors.
	 */
	public static final int DEFAULT_DIM = 3;
	
	/**
	 * This is the default maximum span in one dimension of a direction vector.
	 * It is strongly correlated with the default maximum velocity agents can
	 * travel.
	 */
	public static final int DEFAULT_REACH = 2;
	
	/**
	 * This value is a suggestion for agent species as a initial value for 
	 * their initial population number.
	 */
	public static final int DEFAULT_INITIAL_POPULATION_SIZE = 10;

	/**
	 * Default energy a fish gives to an energy driven shark when it gets
	 * eaten.
	 * 
	 * @see Agent#getEnergy()
	 */
	public static int DEFAULT_ENERGY = 10;
	
	/**
	 * The detection range power two. This is the radius around each 
	 * individual, in which this individual can see others. 
	 */
	public static final int DEFAULT_NEIGHBOR_RADIUS2 = 100;
	
	/**
	 * The eating radius power two. This is the radius around each 
	 * individual, in which this individual can eat others immediately. 
	 */
	public static final int DEFAULT_EATING_RADIUS2 = 16;
}
